package io.github.heollhai.common.entity.bo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 权限表
 *
 * @author mf
 * @since 2024-08-06
 */
@Getter
@ToString
@Setter
@TableName("auth_permission")

public class PermissionBo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 权限名称
     */
    private String name;

    /**
     * 权限描述
     */
    private String remark;

    /**
     * 操作类型
     */
    private String actionType;

    /**
     * 1启用，0禁用
     */
    private Integer status;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 父级id
     */
    private Integer pid;

    /**
     * 路由菜单访问路径
     */
    private String path;

    /**
     * 路由 name (对应页面组件 name, 可用作 KeepAlive 缓存标识 && 按钮权限筛选)
     */
    private String pathName;

    /**
     * 视图文件路径
     */
    private String componentPath;

    /**
     * 路由重定向地址
     */
    private String redirect;

    /**
     * 菜单和面包屑对应的图标
     */
    private String metaIcon;
    /**
     * 后端接口地址
     */
    private String apiUrl;

    /**
     * 路由标题 (用作 document.title || 菜单的名称)
     */
    private String metaTitle;

    /**
     * 当前路由为详情页时，需要高亮的菜单
     */
    private String metaActiveMenu;

    /**
     * 路由外链时填写的访问地址
     */
    private String metaIsLink;

    /**
     * 是否在菜单中隐藏 (通常列表详情页需要隐藏)
     */
    private Integer metaIsHide;

    /**
     * 菜单是否全屏 (示例：数据大屏页面)
     */
    private Integer metaIsFull;

    /**
     * 菜单是否固定在标签页中 (首页通常是固定项)
     */
    private Integer metaIsAffix;

    /**
     * 当前路由是否缓存
     */
    private Integer metaIsKeepAlive;

    /**
     * 其他标识,通常类似功能使用同一页面是用于区分
     */
    private String metaFlag;

    /**
     * 多个以逗号分割存储 (暂时最多一个)
     */
    private String metaRole;

    /**
     * -1所有系统可以访问
     */
    private Integer systemId;
    /**
     * 子集数量
     */
    private Integer childrenNumber;


    private LocalDateTime createdTime;

    private LocalDateTime updateTime;
}